package title;

/**
 * 功能：
 * 作者：lc
 * 日期：2024/11/15 17:40
 */

/*
测试地址：https://www.marscode.cn/practice/2kke8nkd78o2d6?problem_id=7414004855077978156
思路：通过父串中可能的子串，进行还原拼接字符串，最后比较
1.寻找可能的子串
    可能的长度只可能在inp.length()/2
2.拼接出相同长度的字符串
3.比较新字符串
    是    直接返回当前子串
    不是  继续循环直到inp.length()/2，返回“”
 */

public class MinSubString {
    public static String solution(String inp) {
        // 1.寻找可能的子串
        int n = inp.length();
        for (int i = 1; i < n / 2; i++) {
            if (n % i == 0) {

                // 2.拼接出相同长度的字符串
                String subStr = inp.substring(0, i);
                StringBuilder strBuil = new StringBuilder();
                for (int j = 0; j < n / i; j++) {
                    strBuil.append(subStr);
                }
                // 3.比较新字符串，
                if (inp.equals(strBuil.toString())) {
                    return subStr;
                }
            }
        }
        return "";
    }

    public static void main(String[] args) {
        // Add your test cases here
        System.out.println(solution("abcabcabcabc").equals("abc"));
        System.out.println(solution("abcabcabcabcq").equals("abc"));


    }
}
